'''
# 一维
V = int(input())
n = int(input())
a = []
for i in range(n):
    a.append(int(input()))
dp = [0 for i in range(V + 1)]
for i in a:
    for j in range(V, i - 1, -1):
        dpj, dpjv = dp[j], dp[j - i] + i
        if dpj < dpjv: dp[j] = dpjv
print(V - dp[V])
'''
# 二维
V = int(input())
n = int(input())
a = [0]
for i in range(n):
    a.append(int(input()))
dp = [[0 for j in range(V + 1)] for i in range(n + 1)]
mn = min(a)
for i in range(1, n + 1):
    # 需要注意的是，不是从a[i]开始，而是从a中最小的元素开始，不然可能会统计丢。
    for j in range(mn, V + 1):
        # 然后这行最后的“\”是告诉解释器，这行还没有结束，下面那行的也算在这行后面。
        # 然后“\”必须是每行的最后一个字符，不然会报错。
        dpj, dpjv = dp[i - 1][j], dp[i - 1][j - a[i]] + a[i] if j >= a[i]\
                                                             else 0
        dp[i][j] = max(dpj, dpjv)
print(V - dp[n][V])
# -------------------------------------------------------------------------------

# 比赛环境为python3.8.6版本自带的IDLE，最好早点熟悉一下。。这个东西的提示时有时无

# 菜单栏最右边的Help的Python Docs 比赛时候也可以看，不过建议还是提前多了解了解，

# 比赛的时候至少知道在文档找什么能用的上。

# IDLE是下载Python时自带的，在按住win+s搜索IDLE就能搜到了。

# 然后点左上角的File可以创建新文件，然后按F5可以运行。
